/*
 *自定义事件处理引擎
 *因为jquery的事件对于简单使用有些重，所以我自己实现了一个简单的
 *虽然叫事件引擎，其实是发布者订阅者模式的一个实现
 */
(function(){
	var oo={}
	oo.eventArray={};
	//注册一个事件，并且绑定一个函数
	oo.reg=function(eventKey,id,callback){
		this.eventArray[eventKey]=this.eventArray[eventKey]||[];
		var _cbs;
		if(this.eventArray[eventKey]){
			_cbs=this.eventArray[eventKey];
		}else{
			_cbs={};
		}
		_cbs[id]=callback;
		this.eventArray[eventKey]=_cbs;
	}

	//触发一个事件，并执行他回调函数,data是附带的事件参数
	oo.trigger=function(eventKey,data){
		var cbs=this.eventArray[eventKey];
		if(this.eventArray[eventKey]){
			if(cbs &&(typeof cbs ==='object')){
				for(var id in cbs){
					var callback=cbs[id];
					if(typeof callback === 'function'){
						callback(data);
					}
				}
			}
		}
	}

	//卸载掉一个事件的回调函数
	oo.off=function(eventKey,id){
		var cbs=this.eventArray[eventKey];
		if(this.eventArray[eventKey]){
			if(cbs &&(typeof cbs ==='object') ){
				delete cbs[id];
			}
		}
	}

	//清除一个事件下的所有回调，并删除这个事件
	oo.clear=function(eventKey){
		if(eventKey){
			delete this.eventArray[eventKey];
		}
	}
	if(module && module.exports){
		module.exports=oo;
	}
	if(window){
		window.MgpEvent=oo;
	}
})();